package com.ncwebinc.comprando.java.producto.dao;

import java.util.List;

import javax.persistence.EntityManager;
import javax.persistence.Query;

import com.ncwebinc.comprando.model.Producto;

public enum ProductoDao {
	INSTANCE;

	public List<Producto> listProductos() {
		EntityManager em = EMFService.get().createEntityManager();
		// Read the existing entries
		Query q = em.createQuery("select m from Producto m");
		@SuppressWarnings("unchecked")
		List<Producto> Productos = q.getResultList();
		return Productos;
	}

	public void add(String userId, String summery, String description,
			String url) {
		synchronized (this) {
			EntityManager em = EMFService.get().createEntityManager();
			Producto producto = new Producto(userId, summery, description, url);
			em.persist(producto);
			em.close();
		}
	}

	public List<Producto> getProductos(String userId) {
		EntityManager em = EMFService.get().createEntityManager();
		Query q = em
				.createQuery("select t from Producto t where t.author = :userId");
		q.setParameter("userId", userId);
		@SuppressWarnings("unchecked")
		List<Producto> producto = q.getResultList();
		return producto;
	}

	public void remove(long id) {
		EntityManager em = EMFService.get().createEntityManager();
		try {
			Producto producto = em.find(Producto.class, id);
			em.remove(producto);
		} finally {
			em.close();
		}
	}
}